﻿/**
 * 将工具栏固定在浏览器窗口顶部
 */
(function(E){
var Consts = E.consts,
	Event = E.mod("Event"),
	// 是否固定到页面顶部
	isFixed = false,
	timeId = 0,
	isScrolling = false;

E.plugin("FixedToolbar", {
	run: function(){
		fixedToolbar();
	}
});

Event.bind("onscroll", function( ){
	fixedToolbar();
	
	// 2012-01-31 潘雪鹏
	// 滚动浏览器时 onscroll 事件会被频繁触发，
	// hidePanel() 仅需要在开始滚动时执行一次，不需要重复执行
	// 通过下面的方式，可以实现这点
	if( !isScrolling ){
		hidePanel();
		isScrolling = true;
	}
	
	clearTimeout(timeId);
	timeId = setTimeout(function(){isScrolling = false}, 100);
});

// 将工具栏固定在页面顶部
function fixedToolbar( ){
	var scrollTop = $(document).scrollTop(),
		Toolbar = E.mod('Toolbar'),
		toolbar = Toolbar.getCurrent(),
		option = E.get('option'),
		editor = $('#'+E.eid+' .jqe-content'),
		maxScroll = editor.height() + editor.offset().top;
	if( !toolbar || !option.autoHeight ){
		E.log('run', '没有找到工具栏或未设置浮动');
		return;
	}
	
	// IE6 下$(document).scrollTop() 貌似得不到正确的值
	if( Consts.IE6 && !scrollTop) {
		scrollTop = document.documentElement.scrollTop;
	}
	
	// option.toolbarTop 在mod.toolbar.js当中被初始化值
	if( option.toolbarTop && (scrollTop < option.toolbarTop || scrollTop > maxScroll)){
		//当工具栏超过编辑器区域最下面的边时，则还原工具栏
		toolbar.removeClass( option.fixedClassName );
		if(Consts.IE6){
			toolbar.css('top', 0);
		}
		E.log('run', '工具栏取消浮动');
		isFixed = false;
	}else{
		// 仅首次浮动事件触发操作
		if( !isFixed ){
			toolbar.addClass(option.fixedClassName);
			E.log('run', '工具栏开始浮动');
		}
		
		if(Consts.IE6){
			// toolbar父级标签有position:relative时，在IE6下需对其top值进行特殊处理
			var parent = toolbar.parents(),obj = null;
			for(var i = 0 ;i<parent.length ;i++) {
				obj = parent.eq(i);
				if(/(relative|absolute)/i.test(obj.css('position')) ) {
					scrollTop -= obj.offset().top;
					break;
				}
			}
			toolbar.css('top', scrollTop);
		}
		
		isFixed = true;
	}
	
}

// 开始滚动时隐藏
function hidePanel(){
	$(".jqe-panel:visible").each(function(i, el){
		var id = el.id.replace('panel_', '');
		if ( !E.plugin(id).config.position || E.plugin(id).config.position !== 'center' ){
			el.style.display = 'none';
			E.log('run', '自动隐藏了'+ id +'插件');
		}
	});
	$(".jqe-menu:visible").hide();
}

})(jQEditor);